<?php
/**
 * --------------------------------------------------------------
 * admin已登录入口控制器
 * Author: zd <kfzphp@126.com>
 * Date: 2018-06-01
 * Project: kfzphp.com
 * --------------------------------------------------------------
 */

class EntryController extends AdminController
{
    /**
     * 初始化
     */
    public function __construct()
    {
        parent::__construct();

        // 判断是否登录
        self::isLogin();
    }

    /**
     * 验证用户登录状态
     */
    private function isLogin()
    {
        if(in_array(ACTION_NAME, $this->config['ALLOW_ACTION'])) {
            // allow action
            self::isPass();
        } else if(IS_SUBMIT) {
            // post ajax
            self::isAjax();
        } else {
            // view
            self::isView();
        }
    }

    /**
     * 通过请求
     */
    private function isPass()
    {

    }

    /**
     * 如果是ajax请求
     */
    private function isAjax()
    {
        // 权限验证
        $user_tree = session('sess_roletree');
        if(empty($user_tree)) {
            R(['status' => 0, 'info' => '用户权限错误']);
        }
    }

    /**
     * 如果是页面展示
     */
    private function isView()
    {
        // 权限验证
        $user_tree = session('sess_roletree');
        if(empty($user_tree)) {
            if($this->config['APP_SAFETY']) {
                msg('请先登录系统!');
            } else {
                location_url('/admin/login/logout');
            }
        }

        // 对用户直接输入控制器权限判断
        $ishow = show_roletree($user_tree);
        if(!$ishow) {
            msg('您没有访问权限!');
        }

        // 界面赋值
        $this->show('system_name', $this->config['SYSTEM_NAME']);   // 系统名称
        $this->show('copyright_info', $this->config['COPYRIGHT_INFO']); // 公司信息
        $this->show('system_menu', get_system_menu($user_tree));    // 系统菜单
    }

    /**
     * 修改密码
     */
    public function passwd()
    {
        // 判断是否是submit
        is_submit();
        // 判断是否存在配置记录
        self::isconfig();

        // 获取新密码
        $password = P('pass', '');
        if(empty($password)) {
            R(['status' => 0, 'info' => '新输入六位或六位以上新密码', 'code' => 1]);
        }

        // 更新密码
        $handle = $this->model->updateConfig(['adminpass' => md5($password)]);
        if($handle === false) {
            R(['status' => 0, 'info' => '密码更新失败', 'code' => 2]);
        }

        R(['status' => 1, 'info' => '密码更新成功']);
    }

    /**
     * 判断是否存在配置记录
     */
    private function isconfig()
    {
        $count = $this->model->getConfigCount();
        if(empty($count)) {
            $config_id = $this->model->insertConfig(['adminpass' => '']);
            if($config_id === false) {
                R(['status' => 0, 'info' => '新增配置失败', 'code' => 1]);
            }
        }
    }

}